package com.cnhis.cloudhealth.clidoctorweb.cliregistration;

import java.util.HashMap;
import java.util.HashMap;
import java.util.Map;

import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.jboss.resteasy.logging.Logger;
import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Reference;
import com.cnhis.cloudhealth.clinical.clidoctor.cliregistration.service.IRegistrat;
import com.cnhis.cloudhealth.commons.Mappers.ModelVo;
import com.cnhis.cloudhealth.commons.utils.StaticKeys;

@Path("cliregistration")
@Component
public class CliRegistrationRest
{
    Logger log = Logger.getLogger(CliRegistrationRest.class);
    
    @Reference
    private IRegistrat registration;
    
    /**
     * Description(查询性别列表)
     * 
     * @return
     * @throws Exception
     */
    @GET
    @Path("getABWList")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo getABWList()
            throws Exception
    {
        return registration.getABWList();
    }
    
    
    /**
     * ScriptId(2046) Description(检索医师对应的挂号类别)
     * 
     * @param currPage
     * @param pageSize
     * @return
     * @throws Exception
     */
    @POST
    @Path("getdoctorregistrationtype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo getDoctorRegistrationType(@FormParam("BCE01") Long BCE01,
        @FormParam("BCK01") int BCK01,
        @FormParam("currPage") int currPage,
        @FormParam("pageSize") int pageSize)
            throws Exception
    {
        Map<String,Object> param = new HashMap<String,Object>(); 
        param.put("BCE01", BCE01);
        param.put("BCK01", BCK01);
        return registration.getDoctorRegistrationType((currPage - 1) * pageSize, pageSize, param);
    }
    
    /* ScriptId(2059) */
    /* Description(检索科室对应挂号类别) */
    /**
     * 
     * @param currPage
     * @param pageSize
     * @return
     * @throws Exception
     */
    @POST
    @Path("getdepartmentsregistrationtype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo getDepartmentsRegistrationType(@FormParam("currPage") int currPage,
        @FormParam("pageSize") int pageSize)
            throws Exception
    {
        return registration.getDepartmentsRegistrationType((currPage - 1) * pageSize, pageSize);
    }
    
    /* ScriptId(7263) */
    /* Description(简易挂号界面元素设定) */
    /**
     * 
     * @return
     * @throws Exception
     */
    @POST
    @Path("setuielements")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo setUIElements()
        throws Exception
    {
        return registration.setUIElements();
    }
    
    /* ScriptId(2116) */
    /* 提取挂号类别对应的费用项目 */
    /**
     * 
     * @param lBBY01 收费项目id
     * @param lCheck
     * @param ABC02 病人费别
     * @param bck01 科室id
     * @param aDate 日期
     * @param currPage
     * @param pageSize
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @POST
    @Path("getitemsofregistrationtype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo getItemsOfRegistrationType(@FormParam("lBBY01") int lBBY01, @FormParam("lCheck") int lCheck,
        @FormParam("ABC02") String ABC02, @FormParam("bck01") int bck01, @FormParam("aDate") String aDate,
        @FormParam("currPage") int currPage, @FormParam("pageSize") int pageSize)
            throws Exception
    {
        HashMap map = new HashMap();
        map.put("lBBY01", lBBY01);
        map.put("lCheck", lCheck);
        map.put("ABC02", ABC02);
        map.put("bck01", bck01);
        map.put("aDate", aDate);
        return registration.getItemsOfRegistrationType(map, (currPage - 1) * pageSize, pageSize);
    }
    
    /* ScriptId(7512) */
    /* Description(获取挂号类别与科室默认对应的费别) */
    /**
     * 
     * @param BCK01 科室id
     * @param BCB01 挂号类别
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @POST
    @Path("registrationtypedefaultchargetype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo registrationTypeDefaultChargeType(@FormParam("BCK01") int BCK01, @FormParam("BCB01") int BCB01)
        throws Exception
    {
        HashMap map = new HashMap();
        map.put("BCK01", BCK01);
        map.put("BCB01", BCB01);
        return registration.registrationTypeDefaultChargeType(map);
    }
    /* ScriptId(7520) */
    
    /* Description(简易挂号诊金折扣) */
    /**
     * 
     * @param lBBY01 收费项目目录id
     * @param ABC02 病人费别
     * @param bck01 科室id
     * @param vaj25
     * @param bby25
     * @param asign
     * @param aDate 日期
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @POST
    @Path("hospitalfeerebate")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo hospitalFeeRebate(@FormParam("lBBY01") int lBBY01, @FormParam("ABC02") String ABC02,
        @FormParam("bck01") int bck01, @FormParam("vaj25") int vaj25, @FormParam("bby25") int bby25,
        @FormParam("asign") int asign, @FormParam("aDate") String aDate, @FormParam("currPage") int currPage,
        @FormParam("pageSize") int pageSize)
            throws Exception
    {
        HashMap map = new HashMap();
        map.put("lBBY01", lBBY01);
        map.put("ABC02", ABC02);
        map.put("aDate", aDate);
        map.put("bck01", bck01);
        map.put("vaj25", vaj25);
        map.put("bby25", bby25);
        map.put("asign", asign);
        return registration.hospitalFeeRebate(map, (currPage - 1) * pageSize, pageSize);
    }
    /* ScriptId(7494) */
    
    /* Description(默认挂号类别设置) */
    /**
     * 
     * @param bcb01 挂号类别id
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @POST
    @Path("settingdefaulttype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo settingDefaultType(@FormParam("bcb01") int bcb01)
        throws Exception
    {
        HashMap map = new HashMap();
        map.put("bcb01", bcb01);
        return registration.settingDefaultType(map);
    }
    /* ScriptId(7264) */
    
    /* Description(挂号提取病人费别) */
    /**
     * 
     * @param aDate 日期
     * @return
     * @throws Exception
     */
    @POST
    @Path("patientfeetype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo patientFeeType(@FormParam("aDate") String aDate)
        throws Exception
    {
        HashMap map = new HashMap();
        map.put("aDate", aDate);
        return registration.patientFeeType(map);
    }
    /* ScriptId(7237) */
    
    /* Description(简易挂号类别选择) */
    /**
     * 
     * @param BCK01 科室id
     * @param BCE01 医师id
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    @POST
    @Path("selecttype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo selectType(@FormParam("BCK01") int BCK01, @FormParam("BCE01") int BCE01,
        @FormParam("currPage") int currPage, @FormParam("pageSize") int pageSize)
            throws Exception
    {
        HashMap map = new HashMap();
        map.put("BCK01", BCK01);
        map.put("BCE01", BCE01);
        return registration.selectType(map, (currPage - 1) * pageSize, pageSize);
        
    }
    /* ScriptId(7483) */
    
    /* Description(简易挂号检索病人类别) */
    @SuppressWarnings("unchecked")
    @POST
    @Path("selectpatienttype")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo selectPatientType(@FormParam("ACF01") int ACF01, @FormParam("currPage") int currPage,
        @FormParam("pageSize") int pageSize)
            throws Exception
    {
        HashMap map = new HashMap();
        map.put("ACF01", ACF01);
        return registration.selectPatientType(map, (currPage - 1) * pageSize, pageSize);
    }
    /* ScriptId(7506) */
    
    /* Description(病人类别扩展信息设置) */
    @POST
    @Path("expandinfo")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo expandInfo(@FormParam("currPage") int currPage, @FormParam("pageSize") int pageSize)
        throws Exception
    {
        return registration.expandInfo((currPage - 1) * pageSize, pageSize);
    }
    
    /**
     * 新增简易挂号记录
     * 
     * @param lBCB03 挂号类别名称
     * @param lVAA03 门诊号
     * @param lVAC06 复诊
     * @param lVAC10 急诊
     * @param lVAA02 会员卡号
     * @param lVAA05 姓名
     * @param lABW01 性别
     * @param lVAA12 出生日期
     * @param lVAA10 年龄
     * @param lAAT02 职业
     * @param lACK01 婚姻
     * @param lACC02 国籍
     * @param lABQ02 民族
     * @param lBDP02 病人类别
     * @param lABC02 病人费别
     * @param lABJ01 付款方式
     * @param lVAC41 发病时间
     * @param lVAA57 首诊时间
     * @param lVCJ08 症状体征
     * @param lVCJ15 是否允许查看健康档
     * @param lVAA34 电话
     * @param lVAA35 移动电话
     * @param lUAA01 社区
     * @param lVAA33 住址
     * @param lBDX02 了解途径
     * @param lVAA06 监护人
     * @param lVAC57 介绍人
     * @param lVAC46 摘要
     * @param lVAC27 工作单位
     * @param lVAC28 单位电话
     * @param lVAC29 单位地址
     * @return
     * @throws Exception
     */
    @POST
    @Path("save")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo saveInfo(@FormParam("mydata") String mydata, @FormParam("grid2rows") String grid2rows)
            throws Exception
    {
        Map<String, Object> params = new HashMap<String, Object>();
        
        params.put("mydata", mydata);
        params.put("grid2rows", grid2rows);
        return registration.save(params);
    }
    /**
     * 新增简易挂号记录-执行一卡通扣费
     * 
     * @param lBCB03 挂号类别名称
     * @param lVAA03 门诊号
     * @param lVAC06 复诊
     * @param lVAC10 急诊
     * @param lVAA02 会员卡号
     * @param lVAA05 姓名
     * @param lABW01 性别
     * @param lVAA12 出生日期
     * @param lVAA10 年龄
     * @param lAAT02 职业
     * @param lACK01 婚姻
     * @param lACC02 国籍
     * @param lABQ02 民族
     * @param lBDP02 病人类别
     * @param lABC02 病人费别
     * @param lABJ01 付款方式
     * @param lVAC41 发病时间
     * @param lVAA57 首诊时间
     * @param lVCJ08 症状体征
     * @param lVCJ15 是否允许查看健康档
     * @param lVAA34 电话
     * @param lVAA35 移动电话
     * @param lUAA01 社区
     * @param lVAA33 住址
     * @param lBDX02 了解途径
     * @param lVAA06 监护人
     * @param lVAC57 介绍人
     * @param lVAC46 摘要
     * @param lVAC27 工作单位
     * @param lVAC28 单位电话
     * @param lVAC29 单位地址
     * @return
     * @throws Exception
     */
    @POST
    @Path("save_charge")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo save_charge(@FormParam("mydata") String mydata,@FormParam("chargejson") String chargejson, @FormParam("isPay") int isPay,
        @FormParam("grid2rows") String grid2rows)
        throws Exception
    {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("chargejson", chargejson);
        params.put("mydata", mydata);
        params.put("grid2rows", grid2rows);
        params.put("isPay", isPay);
        
        try
        {
            return registration.save_charge(params);
        }
        catch (Exception e)
        {
            e.printStackTrace();
            ModelVo mv = new ModelVo();
            String message=e.getMessage();
            if(message.contains("@"))
            {
                message = message.split("@")[0].split("ExBaseException:")[1];
                mv.setResultMsg(message);
            }
            else
            {
                mv.setResultMsg("保存失败，请查看日志");
            }
            mv.setResult(StaticKeys.OH_FALSE);
            return mv;

        }
    }
    
    /**
     * 
     * @param lBCB03
     * @param lVAA03
     * @param lVAC06
     * @param lVAC10
     * @param lVAA02
     * @param lVAA05
     * @param lABW01
     * @param lVAA12
     * @param lVAA10
     * @param lAAT02
     * @param lACK01
     * @param lACC02
     * @param lABQ02
     * @param lBDP02
     * @param lABC02
     * @param lABJ01
     * @param lVAC41
     * @param lVAA57
     * @param lVCJ08
     * @param lVCJ15
     * @param lVAA34
     * @param lVAA35
     * @param lUAA01
     * @param lVAA33
     * @param lBDX02
     * @param lVAA06
     * @param lVAC57
     * @param lVAC46
     * @param lVAC27
     * @param lVAC28
     * @param lVAC29
     * @param lBCE01
     * @param lBCE02A
     * @param lBCK01
     * @return
     * @throws Exception
     */
    @POST
    @Path("saveShouye")
    @Produces({MediaType.APPLICATION_JSON})
    public ModelVo saveShouye()
            throws Exception
    {
        Map params = new HashMap<>();
        return registration.saveShouye(params );
    }
    
}
